package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.req.so.CntrAndDgBaseVO;
import com.cmc.cloud.cmclink.doc.entity.SpecialCargoDgDO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgvo.DgCreateOrUpdateReqVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgvo.SpecialCargoDgBaseVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgvo.SpecialCargoDgRespVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgvo.SpecialCargoDgUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 特种货审批dg Convert
 *
 * @author 集运管理员
 */
@Mapper
public interface SpecialCargoDgConvert {

    SpecialCargoDgConvert INSTANCE = Mappers.getMapper(SpecialCargoDgConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    SpecialCargoDgDO convert(SpecialCargoDgBaseVO bean);

    /**
     * 将API请求VO转换为DO
     *
     * @param bean
     * @return
     */
    SpecialCargoDgDO convertApi(com.cmc.cloud.cmclink.doc.api.document.req.so.SpecialCargoDgBaseVO bean);


    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    SpecialCargoDgDO convert(DgCreateOrUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    SpecialCargoDgDO convert(SpecialCargoDgUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return
     */
    SpecialCargoDgRespVO convert(SpecialCargoDgDO bean);

    /**
     * 将DO转换为查询响应VO
     *
     * @param bean
     * @return
     */
    com.cmc.cloud.cmclink.doc.vo.special.externalapivo.CntrAndDgBaseVO convert(CntrAndDgBaseVO bean);

    /**
     * 属性转换 convert
     *
     * @param list
     * @return
     */
    List<SpecialCargoDgRespVO> convertList(List<SpecialCargoDgDO> list);

    /**
     * 属性转换
     *
     * @param specialCargoDgDoList
     * @return
     */
    List<com.cmc.cloud.cmclink.doc.api.document.req.so.SpecialCargoDgBaseVO> convertSpecialCargoDgBaseVo(List<SpecialCargoDgDO> specialCargoDgDoList);

    /**
     * 将API请求VO列表转换为查询响应VO列表
     *
     * @param dgBaseInfo
     * @return
     */
    List<SpecialCargoDgBaseVO> convertApi2SpcDgBaseVo(List<com.cmc.cloud.cmclink.doc.api.document.req.so.SpecialCargoDgBaseVO> dgBaseInfo);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param specialCargoDgDoList
     * @return
     */
    List<SpecialCargoDgBaseVO> convertDo2BaseList(List<SpecialCargoDgDO> specialCargoDgDoList);

}
